#include "main_widget.h"

main_widget::main_widget(QWidget *parent)
    : QWidget(parent)
{
    setWindowTitle("hello qt");
    b1.setParent(this);
    b1.setText("切换窗口");
    b1.move(50, 50);

    QPushButton *pb2 = new QPushButton(this);
    pb2->setText("lambda 表达式测试");

   // w2.show();
    connect(&b1, &QPushButton::pressed, this, &main_widget::changewindow);
    // 信号处理
    // 不带参数
    void (subwidget::*funsignal1)() = &subwidget::cliked_signals_funtion;
    connect(&w2, funsignal1, this, &main_widget::sinnal_deal);

    //带参数
    void (subwidget::*funsignal2)(int, QString) =  &subwidget::cliked_signals_funtion;
    connect(&w2, funsignal2, this, &main_widget::signal_deal_2);

    // lambda 表达式
    connect(pb2, &QPushButton::pressed,
            [] //传递外部变量
            //= ：把外部所有既不变量以及类中所有成员以值传递 传递进来默认为只读，加mutable
            // this ：类中所有成员以值传递方式
            // & ：外部所有局部变量
            () //函数参数书
            mutable//
    {
        qDebug() << "测试u" << "hhh";
    }
    );
    resize(400, 300);
}

main_widget::~main_widget()
{

}
void main_widget::signal_deal_2(int a, QString str)
{
    qDebug() << a << str.toUtf8().data();
}
void main_widget::changewindow()
{
    w2.show();
    this->hide();
}
void main_widget::sinnal_deal()
{
    w2.hide();
    this->show();
}
